Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Вивід інформації на семисегментні елементи, що працюють в режимі динамічної індикації

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2012
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Програмування

Частина тексту файла

Міністерство освіти і науки, молоді та спорту України Національний університет «Львівська політехніка» ЗВІТ про виконання лабораторної роботи №3: з курсу «Програмування мікроконтролерів СА» Тема: «Вивід інформації на семисегментні елементи, що працюють в режимі динамічної індикації» Варіант № 1 Мета роботи: Зібрати у пакеті симуляції Proteus схему на основі МК ATmega32A та написати програму мовою Ci для реалізації вказазаного алгоритму (таблиця 2). Завдання: Таблиця 1. Завдання У завданні вказується таймер за допомогою якого потрібно реалізувати відлік інтервалів часу для зазначеного пристрою. Динамічну індикацію дозволяється реалізувати за допомогою іншого таймера. При використанні таймера 2 в асинхронному режимі передбачається, що він тактується від годинникового кварца 32768 Гц. Тривалість звукових сигналів вибирається студентом самостійно, дотримуючись вказаних меж.  № п/п Таймер відліку часу Частота такту-вання, Гц Кноп-ки Сиг-нал Порт ке-рування 7-сегментн. Виводи ке-рування напругами Алго-ритм  1 T0 7.3728 PC(0-3) PC7 PORTA PB(1-6) 1   Таблиця 2. Варіанти пристроїв № п/п Опис алгоритму роботи пристрою  1 Годинник. Відображає години, хвилини, секунди. Запускається одразу ж при подачі живлення на МК. При співпадінні значень будильника та годинника запускається звуковий сигнал (короткими гудками) тривалістю 0,5-2 хв. Кнопка 1 – виставляє значення годин годинника або будильника. Кнопка 2 – виставляє значення хвилин годинника або будильника. Кнопка 3 – відображає значення будильника та дає можливість кнопками 1 та 2 змінювати його значення. Кнопка 4 – активізує/відключає будильник (при натисненій кнопці 3), якщо будильник активований, то у секції секунд відображається літера А.   / Рис. 1. Схема підключення в пакеті Proteus. Остаточна версія програми: #include <avr/interrupt.h> #include <util/delay.h> #include <avr/io.h> // 0 1 2 3 4 5 6 7 8 9 const unsigned char codes[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; const unsigned char codespoint[10] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; volatile long unsigned int clock = 0; //формування 1 с volatile long unsigned int pause = 0; //формування unsigned char data[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; unsigned char counter=0; unsigned long buzzer=0; unsigned long indicator=0; unsigned char buzflag = 0; unsigned char OffInd[2] = {0x3f,0x71}; unsigned char OnInd[2] = {0x3f,0x54}; unsigned char ringstatus = 0; unsigned int seconds = 0; unsigned int minutes = 0; unsigned int hours = 0; //knopki unsigned char pc0status = 0; unsigned char ringer = 0; //ringer unsigned int ringminutes = 0; unsigned int ringhours = 0; void init_timercl (void) { TIMSK|=(1<<OCIE0); // Дозволити переривання по співпаданню. OCR0=0x48; // Частота 7,3728 МГц, 10ms - 72 такта. TCCR0|=(1<<WGM01)|(1<<CS00)|(1<<CS02); // Ділити частоту на 1024. } void init_timer (void) { TIMSK=(1<<TOIE2); //Включаємо переривання таймера по переповненню TCCR2=(0<<CS20)|(1<<CS21)|(0<<CS22); //Prescaller = /1 } //Формування затримки void delayc(long unsigned int Pause_ms) { pause = 0; while (pause < Pause_ms) { } } void convert_data (unsigned int seconds, unsigned int minutes, unsigned int hours) { unsigned int temp,res; temp=hours; res=temp/10; //Calculate 10-h if (ringstatus == 1) { data[0]=OnInd[0]; } else if (ringstatus == 2) { data[0]=OffInd[0]; } else { data[0]=codes[res]; } temp=temp-res*10; if (ringstatus == 1) { data[1]=OnInd[1]; } else if (ringstatus == 2) { data[1]=OffInd[1]; } else { data[1]=codespoint[temp]; //Calculate 1-h } temp=minutes; res=temp/10; //Calculate 10-m if (ringstatus == 2) { data[2]=OffInd[1]; } else { data[2]=codes[res]; } temp=temp-res*10; data[3]=codespoint[temp]; //Ca...
Антиботан аватар за замовчуванням

25.02.2013 16:02

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини